package com.sds.service;

/**
 * @Author: sds
 *
 * @Description: 锁
 */
public interface LockService {

    /**
     * 1、可重入锁
     * Java中提供的synchronized，ReentrantLock，ReentrantReadWriteLock都是可重入锁。
     */
    void reentrantLock();

    /**
     * 2、非可重入锁
     */
    void nonReentrantLock();

    /**
     * 3、乐观锁
     * Java中提供的CAS操作，就是乐观锁的一种实现。AtomicInteger乐观锁的底层通过CAS来实现
     */
    void optimisticLock() throws InterruptedException;

    /**
     * 4、悲观锁
     * Java中提供的synchronized，ReentrantLock，ReentrantReadWriteLock都是悲观锁。
     */
    void pessimisticLock() throws InterruptedException;

    /**
     * 5、公平锁
     * Java中提供的synchronized只能是非公平锁。
     */
    void fairLock() throws InterruptedException;

    /**
     * 6、非公平锁
     * Java中提供的ReentrantLock，ReentrantReadWriteLock可以实现公平锁和非公平锁
     */
    void unfairLock() throws InterruptedException;

    /**
     * 7、互斥锁
     * java中提供的synchronized、ReentrantLock是互斥锁。
     */
    void exclusiveLock() throws InterruptedException;

    /**
     * 8、共享锁
     * Java中提供的ReentrantReadWriteLock，有互斥锁也有共享锁。
     */
    void sharedLock() throws InterruptedException;
}